#include <stdio.h>
#include <stdlib.h>

int main()
{
	int x = 15;
	printf("Après Définition et Initialisation de x\n");
	printf(" adresse de x : %x\t", &x);
	printf("valeur de x : %d\n", x);

	int * pInt = &x;
	printf("Après Définition et Initialisation de pInt\n");
	printf(" adresse de pInt : %x\t", &pInt);
	printf("contenu de pInt : %x\t", pInt);
	printf("valeur de la case pointée par pInt : %d\n", *pInt);

	int * ptrInt;
	ptrInt = (int*)malloc(sizeof(int));
	*ptrInt = 100;
	if (ptrInt == NULL)
	{
		printf("Problème d'allocation de mémoire.\n");
		return EXIT_FAILURE;
	}
	printf("Après Allocation et Initialisation de ptrInt\n");
	printf(" adresse de ptrInt : %x\t", &ptrInt);
	printf("contenu de ptrInt : %x\t", ptrInt);
	printf("valeur de la case pointée par ptrInt : %d\n", *ptrInt);

	*pInt = 200;
	printf("******** Après Instruction de modification de la valeur pointée par pInt ********\n");
	printf("Après Définition et Initialisation de pInt\n");
	printf(" adresse de pInt : %x\t", &pInt);
	printf("contenu de pInt : %x\t", pInt);
	printf("valeur de la case pointée par pInt : %d\n", *pInt);

	printf("Après Allocation et Initialisation de ptrInt\n");
	printf(" adresse de ptrInt : %x\t", &ptrInt);
	printf("contenu de ptrInt : %x\t", ptrInt);
	printf("valeur de la case pointée par ptrInt : %d\n", *ptrInt);
	free(ptrInt);

	return EXIT_SUCCESS;
}
